home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 47
/
Freelog047.iso
/
Bas
/
Jeu
/
Aitchu
/
Aitchu[1].swf
/
scripts
/
frame_38
/
DoAction.as
Wrap
Text File
|
2003-06-10
|
7KB
|
240 lines
function CEnemy(MaxResurrecTime, MaxPowerVal, ClipEnemy)
{
this.MaxBlink = 10;
this.BlinkValue = this.MaxBlink;
this.CurrentResurrectionTime = 0;
this.MaxResurrectionTime = MaxResurrecTime;
this.MaxPower = MaxPowerVal;
this.CurrentPower = this.MaxPower;
this.Clip = ClipEnemy;
this.ClipSaveX = this.Clip._x;
this.ClipSaveY = this.Clip._y;
}
function EnemyHitBySprite(EnemiesObjArray, SpriteObj)
{
var HitValue;
var CptArray;
var SpriteBounds;
var CurrentEnemy;
var XValue;
SpriteBounds = SpriteObj.Clip.getBounds(_root);
if(SpriteObj.Direction == G_RIGHT_DIRECTION)
{
XValue = SpriteBounds.xMax;
}
else
{
XValue = SpriteBounds.xMin;
}
HitValue = 0;
CptArray = 0;
while(!HitValue && CptArray < EnemiesObjArray.length)
{
CurrentEnemy = EnemiesObjArray[CptArray];
HitValue = CurrentEnemy.Clip.hitTest(XValue,SpriteBounds.yMin,true) || CurrentEnemy.Clip.hitTest(XValue,SpriteBounds.yMax,true) || CurrentEnemy.Clip.hitTest(XValue,SpriteBounds.yMin + (SpriteBounds.yMax - SpriteBounds.yMin) / 2,true);
CptArray++;
}
if(HitValue && !CurrentEnemy.IsBlinking() && !CurrentEnemy.IsDead())
{
if(CurrentEnemy.ApplyTouched())
{
CptArray--;
return CptArray;
}
return -1;
}
return -1;
}
function EnemyHitByShurikensOfSprite(EnemiesObjArray, SpriteObj, ShurikensBonusMovieClip)
{
var HitValue;
var CptShuriken;
var CptArray;
var SpriteBounds;
var CurrentEnemy;
var XValue;
var AddScore = 0;
CptShuriken = 0;
while(CptShuriken < SpriteObj.ShurikensArray.length)
{
if(SpriteObj.ShurikensArray[CptShuriken]._visible)
{
HitValue = 0;
CptArray = 0;
while(!HitValue && CptArray < EnemiesObjArray.length)
{
CurrentEnemy = EnemiesObjArray[CptArray];
HitValue = CurrentEnemy.Clip.hitTest(SpriteObj.ShurikensArray[CptShuriken]._x,SpriteObj.ShurikensArray[CptShuriken]._y,true);
CptArray++;
}
if(HitValue && !CurrentEnemy.IsBlinking() && !CurrentEnemy.IsDead())
{
if(CurrentEnemy.ApplyTouched())
{
CptArray--;
ShurikensBonusControl(EnemiesObjArray[CptArray],ShurikensBonusMovieClip);
}
SpriteObj.ShurikensArray[CptShuriken]._visible = 0;
AddScore += G_ENEMY_SCORE_VALUE;
}
}
CptShuriken++;
}
return AddScore;
}
function EnemiesControl(EnemiesObjArray)
{
var Cpt;
var CurrentEnemy;
Cpt = 0;
while(Cpt < EnemiesObjArray.length)
{
CurrentEnemy = EnemiesObjArray[Cpt];
if(CurrentEnemy.IsBlinking())
{
CurrentEnemy.DoBlink();
CurrentEnemy.ContinueMoveIfBlinkFinished();
}
else if(CurrentEnemy.IsDead())
{
CurrentEnemy.DoResurrectionIfTimeElapsed();
}
Cpt++;
}
}
function ShurikensBonusControl(EnemyObj, ShurikensBonusMovieClip)
{
if(ShurikensBonusMovieClip._currentFrame == 1 && !Math.floor(Math.random() * G_RANDOM_BONUS_SHURIKENS))
{
ShurikensBonusMovieClip._x = EnemyObj.Clip._x + EnemyObj.Clip.Enemy._x;
ShurikensBonusMovieClip._y = EnemyObj.Clip._y;
ShurikensBonusMovieClip.play();
}
}
function ContinueBossBlink(BossMovieClip, BlinkValue)
{
if(BlinkValue & 1)
{
BossMovieClip._visible = 1;
}
else
{
BossMovieClip._visible = 0;
}
BlinkValue--;
return BlinkValue;
}
function BossHitsBySprite(BossHitMovieClip, SpriteObject)
{
var SBounds = SpriteObject.Clip.getBounds(_root);
var XValue;
if(SpriteObject.Direction == G_RIGHT_DIRECTION)
{
XValue = SBounds.xMax;
}
else
{
XValue = SBounds.xMin;
}
return BossHitMovieClip.hitTest(XValue,SBounds.yMin,true) || BossHitMovieClip.hitTest(XValue,SpriteObject.Clip._y,true) || BossHitMovieClip.hitTest(XValue,SBounds.yMax,true);
}
function BossHitsByShurikens(BossHitMovieClip, ShurikensArray)
{
var HitValue;
var CptShuriken;
HitValue = 0;
CptShuriken = 0;
while(!HitValue && CptShuriken < ShurikensArray.length)
{
if(ShurikensArray[CptShuriken]._visible)
{
HitValue = BossHitMovieClip.hitTest(ShurikensArray[CptShuriken]._x,ShurikensArray[CptShuriken]._y,true);
}
CptShuriken++;
}
return HitValue;
}
function SpriteHitsByBoss(BossHitMovieClip, SpriteObject)
{
var SpriteBounds = SpriteObject.Clip.getBounds(_root);
var Average;
var XCenter;
var YCenter;
Average = (SpriteBounds.xMax - SpriteBounds.xMin) / 2;
YCenter = SpriteObject.Clip._y;
if(SpriteObject.IsJumping() || SpriteObject.IsFalling() || SpriteObject.IsJumpingFromWall() || SpriteObject.IsWaitingOnWall())
{
XCenter = SpriteObject.Clip._x;
}
else if(SpriteObject.Direction == G_RIGHT_DIRECTION)
{
SpriteBounds.xMax -= Average;
XCenter = (SpriteBounds.xMin + SpriteBounds.xMax) / 2;
}
else
{
SpriteBounds.xMin += Average;
XCenter = (SpriteBounds.xMin + SpriteBounds.xMax) / 2;
}
return BossHitMovieClip.hitTest(SpriteBounds.xMin,SpriteBounds.yMin,true) || BossHitMovieClip.hitTest(SpriteBounds.xMin,SpriteBounds.yMax,true) || BossHitMovieClip.hitTest(SpriteBounds.xMax,SpriteBounds.yMin,true) || BossHitMovieClip.hitTest(SpriteBounds.xMax,SpriteBounds.yMax,true) || BossHitMovieClip.hitTest(XCenter,YCenter,true);
}
CEnemy.prototype.IsBlinking = function()
{
return this.BlinkValue;
};
CEnemy.prototype.DoBlink = function()
{
if(this.BlinkValue & 1)
{
this.Clip._visible = 1;
}
else
{
this.Clip._visible = 0;
}
this.BlinkValue--;
};
CEnemy.prototype.ContinueMoveIfBlinkFinished = function()
{
if(!this.BlinkValue)
{
this.Clip.play();
}
};
CEnemy.prototype.ApplyTouched = function()
{
var CurrentX;
var CurrentY;
var NewTime;
var Point;
this.CurrentPower--;
if(this.CurrentPower)
{
this.Clip.stop();
this.BlinkValue = this.MaxBlink;
return 0;
}
this.Clip.stop();
this.Clip.Enemy.play();
NewTime = new Date();
this.CurrentResurrectionTime = NewTime.getTime() / 1000;
delete NewTime;
return 1;
};
CEnemy.prototype.IsDead = function()
{
return !this.CurrentPower;
};
CEnemy.prototype.DoResurrectionIfTimeElapsed = function()
{
var NewTime = new Date();
if(NewTime.getTime() / 1000 - this.CurrentResurrectionTime >= this.MaxResurrectionTime)
{
this.CurrentPower = this.MaxPower;
this.Clip.gotoAndPlay(1);
this.CurrentResurrectionTime = 0;
this.BlinkValue = 10;
}
delete NewTime;
};